1. Field
The present disclosure relates to a system that includes different types of memory having different performance characteristics. More specifically, the present disclosure relates to a system that migrates a block of data among the different types of memory based on a disposition instruction for an access command directed to the block of data.
2. Related Art
Data storage in a computer system typically involve different types of memory and storage devices, such as: static random access memory (SRAM), dynamic random access memory (DRAM), flash memory, a hard disk drive (HDD), an optical disk drive, a tape drive and/or a solid state drive (SSD). Furthermore, software modules within an operating system, which are associated with the different types of memory, are often used to implement a data-storage management system that can handle data demands from the user or an application, as well as from the operating system.
The performance characteristics of the different types of memory can have a strong impact on the overall performance of many computer systems. For example, the input/output (I/O) performance of a computer system can be adversely affected by the I/O performance of HDDs. While an HDD can provide a cost-effective storage solution, from an I/O performance perspective it is often a weak link in a computer system, especially when small blocks of fragmented data are transferred between the HDD and the computer system. Moreover, HDDs are often afflicted by environmental conditions, such as temperature, vibration and/or shock, especially in portable systems. Additionally, an idling HDD can be a major source of power consumption.
In principle, the performance characteristics of other types of memory can be used to offset or mitigate the problems associated with HDDs. However, selecting the appropriate configuration or disposition of one or more blocks of data among the types of memory can be challenging because there are typically tradeoffs in the performance characteristics of the different types of memory. For example, while SSDs have improved I/O performance relative to HDDs, the cost of SSDs, which can be an order of magnitude larger per Giga-byte than HDDs, can be prohibitive. In addition, flash memory (such as NAND flash memory) in SSDs typically has a limited number of available programmable cycles.
Hence, what is needed is a technique for accessing a block of data that overcomes the problems listed above.